<?php
// +----------------------------------------------------------------------
// | 通用PHP框架 [ ThinkPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 郑州智众 [Paulxun@qq.com]
// +----------------------------------------------------------------------
// | 官方网站: https://www.zzmind.com
// +----------------------------------------------------------------------

namespace app\user\admin;

use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use app\user\model\Member as MemberModel;
use app\user\model\Level as LevelModel;
use util\Tree;
use think\facade\Db;

/**
 * Vip等级管理控制器
 * @package app\user\admin
 */
class Level extends Admin
{
    /**
     * 用户等级首页
     * @author PaulXun <paulxun@qq.com>
     * @return mixed
     * @throws \think\Exception
     * @throws \think\exception\DbException
     */
    public function index()
    {
        cookie('__forward__', $_SERVER['REQUEST_URI']);

		
        // 数据列表
        $data_list = LevelModel::getList();
        // 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table')
            ->setPageTitle('Vip等级管理') // 设置页面标题
            ->addColumns([ // 批量添加列
                ['id', '等级ID'],
                ['name', '等级名称'],
                ['first', '首购奖励百分比'],
                ['second', '复购奖励百分比'],
				// ['area_reward', '区域奖励百分比'],
                ['auto_up', '自动升级', 'yesno'],
                ['right_button', '操作', 'btn']
            ])
            ->addRightButtons('edit') // 批量添加右侧按钮
            ->setRowList($data_list) // 设置表格数据
            ->fetch(); // 渲染页面
    }
	
    /**
     * 用户店铺设置首页
     * @author PaulXun <paulxun@qq.com>
     * @return mixed
     * @throws \think\Exception
     * @throws \think\exception\DbException
     */
    public function shop()
    {
        cookie('__forward__', $_SERVER['REQUEST_URI']);

		// 设置按钮
		$btn_set = [
			'title' => '设置',
			'icon'  => 'fa fa-fw fa-cog',
			'class' => 'btn btn-xs btn-primary',
			'href'  => url('set', ['id' => '__id__']),
			'data-title' => '确认设置店铺参数？'
		];
		
        // 数据列表
        $data_list = LevelModel::suffix('_shop')->select();
        // 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table')
            ->setPageTitle('Vip店铺管理') // 设置页面标题
            ->addColumns([ // 批量添加列
                ['id', '等级ID'],
                ['name', '等级名称'],
                ['firstBuy', '首购折扣百分比'],
                ['secondBuy', '复购折扣百分比'],
				['status', '状态', 'yesno'],
				['right_button', '操作', 'btn']
            ])
            ->addTopButtons('add') // 批量顶部右侧按钮
			->addRightButton('custom', $btn_set)
            ->setRowList($data_list) // 设置表格数据
            ->fetch(); // 渲染页面
    }
    /**
     * 编辑VIP等级
     * @param null $id 用户id
     * @author PaulXun <paulxun@qq.com>
     * @return mixed
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function edit($id = null)
    {
        if ($id === null) $this->error('缺少参数');
		// 获取数据
		$info = LevelModel::where('id', $id)->find();
        // 保存数据
        if ($this->request->isPost()) {
            $data = $this->request->post();
			$data['id'] = $id;
            // 验证
            $result = $this->validate($data, 'Level');
            // 验证失败 输出错误信息
            if(true !== $result) $this->error($result);
			if (!$info) {
				$info = new LevelModel;
			}
            if ($info->save($data)) {
                // 记录行为
                action_log('level_edit', 'user_level', $data['id'], UID, LevelModel::level_list($id));
				cache('group_config_'.$id, null);
                $this->success('编辑成功', cookie('__forward__'));
            } else {
                $this->error('编辑失败');
            }
        }
		
		if (!$info)  $info['id'] = $id;
		$info['name'] = LevelModel::level_list($id);

        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
            ->setPageTitle('编辑') // 设置页面标题
            ->addFormItems([ // 批量添加表单项
                ['static', 'id', 'ID'],
                ['static', 'name', '等级名称'],
				['text:8', 'first', '首购返点', '首购返点百分比','', ['', '<i class="fa fa-fw fa-percent"></i>']],
				['text:8', 'second', '复购返点', '复购返点百分比','', ['', '<i class="fa fa-fw fa-percent"></i>']],
				// ['text:8', 'area_reward', '区域奖励', '区域奖励百分比','', ['', '<i class="fa fa-fw fa-percent"></i>']],
				['radio', 'auto_up', '自动升级', '', ['禁用', '启用']],
				['text:8', 'up_no', '升级所需推荐数量',],
				['text:8', 'direct', '升级所需直推数量',],
				// ['text:8', 'indirect', '升级所需间接推荐数量',],
            ])
            ->setFormData($info) // 设置表单数据
			->setTrigger('auto_up', '1', 'direct,indirect', false)
            ->fetch();
    }
	/**
	 * 设置VIP店铺
	 * @param null $id 用户id
	 * @author PaulXun <paulxun@qq.com>
	 * @return mixed
	 * @throws \think\Exception
	 * @throws \think\db\exception\DataNotFoundException
	 * @throws \think\db\exception\ModelNotFoundException
	 * @throws \think\exception\DbException
	 */
	public function set($id = null)
	{
	    if ($id === null) $this->error('缺少参数');
		// 获取数据
		$info = LevelModel::suffix('_shop')->where('id', $id)->find();
	    // 保存数据
	    if ($this->request->isPost()) {
	        $data = $this->request->post();
			$data['id'] = $id;
	        
// 			if ($data['name'] == '') $this->error('店铺分类名称不能为空');
			if ($data['firstBuy'] <= 0) $this->error('首购百分比不能为空');
			if ($data['secondBuy'] <= 0) $this->error('复购百分比不能为空');
			
	        if ($info->save($data)) {
	            // 记录行为
	            action_log('shop_edit', 'user_level', $data['id'], UID, LevelModel::shop_list($id));
				cache('shop_config_'.$id, null);
	            $this->success('设置成功', cookie('__forward__'));
	        } else {
	            $this->error('设置失败');
	        }
	    }
		
		if (!$info)  $info['id'] = $id;
	
	    // 使用ZBuilder快速创建表单
	    return ZBuilder::make('form')
	        ->setPageTitle('设置店铺') // 设置页面标题
	        ->addFormItems([ // 批量添加表单项
	            ['static', 'id', 'ID'],
	            ['static', 'name', '店铺等级名称'],
				['text:8', 'firstBuy', '首购折扣', '首购折扣百分比','', ['', '<i class="fa fa-fw fa-percent"></i>']],
				['text:8', 'secondBuy', '复购折扣', '复购折扣百分比','', ['', '<i class="fa fa-fw fa-percent"></i>']],
				['radio', 'status', '状态', '', ['禁用', '启用']],
	        ])
	        ->setFormData($info) // 设置表单数据
			->setTrigger('auto_up', '1', 'direct,indirect', false)
	        ->fetch();
	}
	
	/**
	 * 新增VIP店铺
	 * @param null $id 用户id
	 * @author PaulXun <paulxun@qq.com>
	 * @return mixed
	 * @throws \think\Exception
	 * @throws \think\db\exception\DataNotFoundException
	 * @throws \think\db\exception\ModelNotFoundException
	 * @throws \think\exception\DbException
	 */
	public function add()
	{
	    // 保存数据
	    if ($this->request->isPost()) {
	        $data = $this->request->post();
			$data['id'] = LevelModel::suffix('_shop')->count('id');
	        
			if ($data['name'] == '') $this->error('店铺分类名称不能为空');
			if ($data['firstBuy'] <= 0) $this->error('首购百分比不能为空');
			if ($data['secondBuy'] <= 0) $this->error('复购百分比不能为空');
			
			$shop = new LevelModel($data);
			
	        if ($shop->setSuffix('_shop')->save()) {
				cache('shop_config_'.$data['id'], null);
				cache('shop_list_999', null);
	            $this->success('设置成功', cookie('__forward__'));
	        } else {
	            $this->error('设置失败');
	        }
	    }
	
	    // 使用ZBuilder快速创建表单
	    return ZBuilder::make('form')
	        ->setPageTitle('设置店铺') // 设置页面标题
	        ->addFormItems([ // 批量添加表单项
	            ['text:8', 'name', '店铺等级名称'],
				['text:8', 'firstBuy', '首购折扣', '首购折扣百分比','', ['', '<i class="fa fa-fw fa-percent"></i>']],
				['text:8', 'secondBuy', '复购折扣', '复购折扣百分比','', ['', '<i class="fa fa-fw fa-percent"></i>']],
				['radio', 'status', '状态', '', ['禁用', '启用'], 1],
	        ])
			->setTrigger('auto_up', '1', 'direct,indirect', false)
	        ->fetch();
	}
}
